Witaj na Forum Linuxiarzy
Zanim zalogujesz się, by pisać na naszym forum, zapoznaj się z kilkoma zasadami savoir-vivre'u w dziale Administracja.
Wiadomości z problemami zamieszczone w wątku "Przywitaj się" oraz wszelkie reklamy na naszym forum będą usuwane.

Problemy z wykryciem kontrolera

Zaczęty przez żuroni, Czerwiec 19, 2025, 11:27:36 AM

Poprzedni wątek - Następny wątek

żuroni

Witam. Niedawno przesiadłem się z Windows na Linux a wybór padł na Nobare.
Problem polega na błędnym wykrywaniu kontrolerów w grze MSFS2020.
Wszystkie kontrolery widziane są przez system i działają prawidłowo.
W grze msfs2020 kontroler taki jak joystick Thrustmaster Warthog Flight Stick widziany jest prawidłowo.
W Steam kontroler Honeycomb Bravo Throttle Quadrant widziany jako zwykły pad i tak samo widziany jest w MSFS2020 ale już orczyki TPR: Thrustmaster Pendular Rudder w grze nie są wykrywane wcale.

Dodam że nie bardzo znam się na linuxie a problem próbowałem rozwiązać za pomocą AI i jedyne co udało się zrobić to zrobić by gra prawidłowo wykryła moje orczyki ale niestety nie potrafię zrobić by moja przepustnica działała prawidłowo.

A tu streszczenie co było testowane przez AI:
1. Wyłączony Steam Input – globalnie i dla gry.
2. Próby blokowania Bravo jako pada:
   - Zmienne środowiskowe SDL (SDL_GAMECONTROLLER_IGNORE_DEVICES, SDL_JOYSTICK_DEVICE_IGNORE)
   - Reguły udev (SDL_JOYSTICK=0)
   - Próby blokowania /dev/input/js0 przez udev
   - Blacklistowanie modułu joydev (co skutecznie usuwa /dev/input/js0)
3. Ręczne dodanie profilu Bravo (inputprofile_Bravo.xml) do katalogu konfiguracyjnego MSFS – gra nie widzi profilu, bo nie widzi urządzenia.
4. Próby użycia protontricks/winetricks do instalacji dodatkowych bibliotek (dinput8, xinput, vcrun2019), z problemami z dostępem do prefixu i cache.
5. Testy z różnymi wersjami Protona (oficjalny, GE-Proton) – gra czasem nie startuje, czasem startuje bez zmian.
6. Dodanie pełnych uprawnień do systemu plików dla Flatpak Steam (flatpak override --filesystem=host) – bez efektu na wykrywanie Bravo.

Logi i szczegóły:

1. Logi Protona/Wine pokazują próby otwarcia urządzenia HID, ale kończą się na komunikatach typu not implemented lub semi-stub dla DirectInput/HIDAPI.
2. Bravo działa natywnie w Linuksie (np. X-Plane, FlightGear), ale nie w MSFS2020 pod Protonem.

Piotr_1988

[post do usunięcia - przepraszam, umieściłem w złym wątku]
NixOS  |  Rocky Linux

linux4ever

@żuroni a na jakim directx jest ta gra jeśli na dx9 wystarczy zainstalować dx9 sdk june 2010 bo to pełna  ostatnia wersja.

Potrzebne ci winetricks do lepszego zarządzania ustawieniami.





"Powiedz mi, a zapomnę, pokaż mi, a zapamiętam, pozwól mi zrobić, a zrozumiem. "-Konfucjusz

żuroni

@linux4ever gra chodzi na dx11.
Cytat: linux4ever w Czerwiec 19, 2025, 05:16:59 PMPotrzebne ci winetricks do lepszego zarządzania ustawieniami.
Mam zainstalowane ale nie bardzo wiem jak miało by mi to pomóc.

linux4ever

#4
Cytat: żuroni w Czerwiec 19, 2025, 06:17:41 PM@linux4ever gra chodzi na dx11.
Cytat: linux4ever w Czerwiec 19, 2025, 05:16:59 PMPotrzebne ci winetricks do lepszego zarządzania ustawieniami.
Mam zainstalowane ale nie bardzo wiem jak miało by mi to pomóc.

@żuroni

Wybierz w prefiksie wine windows7 to powinno pomóc.

Windows7 miał directx11.

"Powiedz mi, a zapomnę, pokaż mi, a zapamiętam, pozwól mi zrobić, a zrozumiem. "-Konfucjusz

żuroni

Cytat: linux4ever w Czerwiec 19, 2025, 06:23:08 PMWybierz w prefiksie wine windows7 to powinno pomóc.
Jak już wspomniałem jestem początkujący na linuxie i mam nadzieję że zmieniłem to prawidłowo ale nie pomogło.
Grę uruchamiam przez Steam, który był już w systemie i z tego co mi wiadomo to gry uruchamiają się za pomocą proton.


linux4ever

Cytat: żuroni w Czerwiec 19, 2025, 06:58:43 PM
Cytat: linux4ever w Czerwiec 19, 2025, 06:23:08 PMWybierz w prefiksie wine windows7 to powinno pomóc.
Jak już wspomniałem jestem początkujący na linuxie i mam nadzieję że zmieniłem to prawidłowo ale nie pomogło.
Grę uruchamiam przez Steam, który był już w systemie i z tego co mi wiadomo to gry uruchamiają się za pomocą proton.



No jak sprawdziłem nie da się.

Pisałem o windows7 ponieważ powinien być w pełni kompatybilny ze wszystkimi grami na dx11.

Szkoda że tego nie da się zmienić.

Zostaje tylko jedno: sprawdź tryb analog na padzie w nim zarządza się gałkami pada zamiast przycisków czy coś w tym stylu.


"Powiedz mi, a zapomnę, pokaż mi, a zapamiętam, pozwól mi zrobić, a zrozumiem. "-Konfucjusz

żuroni

Na tą chwilę mogę podsumować to tak:

Wszystkie kontrolery widziane przez system.

Natywna wersja Steam, Proton GE(różne wersje) widziane kontrolery w grze msfs2020:
Thustmaster Joystick - HOTAS Warthog           - wykrywany działa.
Honeycomb Aeronautical Bravo Throttle Quadrant - wykrywany jako pad (działa nie prawidłowo).
Thrustmaster T-Pendular-Rudder                 - nie wykrywany wcale. Tu po dodaniu reguł do /etc/udev/rules.d/ zaczeło być widoczne i działać.

A teraz tak:
Steam zainstalowany W Lutris uruchamiany za pomocą WineHQ Staging (10.10(Staging)) - tylko tak zadziałał.
W Panelu Sterowania Wine -> Kontrolery Gier widnieją tylko dwa kontrolery, a dokładniej Thustmaster Joystick - HOTAS Warthog i Honeycomb Aeronautical Bravo Throttle Quadrant. W tym przypadku nie potrafię zrobić by Wine wykrył Thrustmaster T-Pendular-Rudder.
Moje pytanie brzmi:
Dlaczego kontrolery w tej samej aplikacji(mowa o MSFS2020) zainstalowane na dwa różne sposoby działają lub nie w zależności jak zostały zainstalowane i co mogę jeszcze sprawdzić by znaleźć rozwiązanie.

linux4ever

@żuroni Zobacz to: https://forum.winehq.org/viewtopic.php?t=36088 oraz to: https://boilingsteam.com/a-step-by-step-guide-to-make-controllers-work-in-wine/

Jak i to: https://github.com/GloriousEggroll/proton-ge-custom/blob/master/docs/CONTROLLERS.md

CytatSome things to note:

SDL2 provides the controller mapping feature of the Steam client. If you don't go through SDL2, then you don't get that mapping feature. Also notice that winebus.sys must turn SDL2 events into usable winebus data (HID protocol). We also allow direct access to hidraw devices so games which can speak HID (or other) protocol can talk directly to those devices.

Xbox controllers do not speak real HID. Instead Windows provides a HID compatibility layer so dinput, which is implemented on top of HID, will present the Xbox controller to legacy games. Of course some games (Unity) have noticed that, and talk directly to this internal HID interface, so we need to duplicate it bit-for-bit in winebus.sys.

Some games support talking directly to certain controller types. For example, many modern games support PlayStation 4 controllers directly and will provide layouts and button images in-game specific to DualShock 4 controllers. For this reason, we don't want to present every controller through xinput, which should only present Xbox controllers.
"Powiedz mi, a zapomnę, pokaż mi, a zapamiętam, pozwól mi zrobić, a zrozumiem. "-Konfucjusz

żuroni

#9
Problem rozwiązany.

Thrustmaster Joystick - HOTAS Warthog - tu bez zmian, wykrywany i działa.

Thrustmaster T-Pendular-Rudder - po dodaniu reguły udev, orczyk został wykryty.

Aby dodać regułę, należy:

1. Utworzyć plik za pomocą komendy:

sudo nano /etc/udev/rules.d/99-t-pendular-rudder.rules
2. Do utworzonego pliku wklejamy:

SUBSYSTEM=="input", ATTRS{idVendor}=="044f", ATTRS{idProduct}=="b68f", MODE="0666", TAG+="uaccess", ENV{ID_INPUT_JOYSTICK}="1"
3. Zapisujemy plik, a następnie go aktywujemy:

sudo udevadm control --reload-rules

sudo udevadm trigger

Po tym zabiegu wszystko zaczęło działać poprawnie.

Honeycomb Aeronautical Bravo Throttle Quadrant - tu się namęczyłem z powodu braku wiedzy i ignorowania wielkości liter, bo wineprefix to nie to samo co WINEPREFIX, więc tak naprawdę nic nie zmieniałem.
W Linuksie każda gra ma swój własny prefiks (chyba każda), dlatego konfigurację kontrolera należy wykonać dla danej gry, a nie w głównym prefiksie Wine.
Po pierwsze, aktywujemy profil Wine dla naszej gry (należy podać ścieżkę do profilu Wine):

WINEPREFIX=~/wine-prefixes/moj_prefiks
Możemy sprawdzić, czy został aktywowany, aby uniknąć problemów.

echo $WINEPREFIX
Teraz, jeśli aktywowaliśmy odpowiedni profil, uruchamiamy Panel sterowania:

wine control
Następnie klikamy w ,,Kontrolery gier" i w oknie, które się pojawi, wybieramy nasz kontroler i klikamy ,,Zastąp".



Od teraz możemy cieszyć się poprawnie wykrytymi kontrolerami w grze.


Zobacz najnowsze wiadomości na forum